/* IntegrityCheckingInterface.java
 * 4 June 2012
 */
package za.ac.wits.elen7045.integrity.checker.interfaces;

import za.ac.wits.elen7045.scraper.interfaces.ScraperSessionInterface;

/**
 * Interface defining the Intergrity checker and its methods
 * 
 * @author Gerhard Visagie
 */
public interface IntegrityCheckingInterface {

	/**
	 * Runs a set of checks against the scraper session data obtained from the scripts
	 * 
	 * Preconditions:
	 * The ScraperSessionInterface cannot be null
	 * ScraperSessionInterface.getUrl must not be null and populated with a valid url, which takes the form 'www.<domain>'
	 * ScraperSessionInterface.getDateTimeUTC Must not be null, and return a valid long which is milliseconds since epoch.
	 * ScraperSessionInterface.getDataPairs Must return a non null hashmap, with key-value pairs of statement data
	 * 
	 * @param scraperSession - ScraperSessionInterface. The scraper session data from the scripts.
	 * @return boolean - true if all the checks where successful
	 */
	public boolean checkScrapedData(ScraperSessionInterface scraperSession);
	
	/**
	 * Compares the various scraper session data sets for common keys in order 
	 * to validate their values.
	 * @NOTE NOT CURRENTLY implemented. Placed here for later implementation 
	 *  
	 * @param scraperSessions - Arraylist of scraper sessions
	 * @return boolean - true if the statement compare was succesfull
	public boolean compareScrapedDataPair(ArrayList<ScraperSessionInterface> scraperSessions);
	*/
}
